Memory devices are typically provided as internal, semiconductor, integrated circuits in computers or other electronic devices. There are many different types of memory including volatile and non-volatile memory. Volatile memory can require power to maintain its data (e.g., host data, error data, etc.) and includes random-access memory (RAM), dynamic random access memory (DRAM), and static random access memory (SRAM), among others. Non-volatile memory can provide persistent data by retaining stored data when not powered and can include NAND flash memory, NOR flash memory, read only memory (ROM), Electrically Erasable Programmable ROM (EEPROM), Erasable Programmable ROM (EPROM), and resistance variable memory such as phase change random access memory (PCRAM), resistive random access memory (RRAM), and magnetoresistive random access memory (MRAM), among others.
“Main memory” is a term of art that describes memory storing data that can be directly accessed and manipulated by a processor. An example of main memory is DRAM. Main memory provides primary storage of data and can be volatile memory or non-volatile memory (e.g., in the case of non-volatile RAM managed as a main memory, such as a non-volatile dual in-line memory module (DIMM)). Secondary storage can be used to provide secondary storage of data and may not be directly accessible by the processor. However, as used herein, “main memory” does not necessarily have to be volatile memory and can, in some embodiments, be non-volatile memory.
Memory devices can be combined together to form a storage volume of a memory system such as a solid state drive (SSD). A solid state drive can include non-volatile memory (e.g., NAND flash memory and NOR flash memory), and/or can include volatile memory (e.g., DRAM and SRAM), among various other types of non-volatile and volatile memory. An SSD may have a controller with a robust amount of local primary storage to enable the SSD to perform relatively complicated memory management operations for the secondary storage compared to those memory management operations that may be performed by a less robust device, such as a mobile device.
Local primary storage for a controller is a limited and relatively expensive resource as compared to most secondary storage. A significant portion of the local primary storage of a controller may be dedicated to storing logical to physical tables that store logical address to physical address translations for logical addresses. A logical address is the address at which a memory unit (e.g., memory cell, sector of data, block of data, etc.) appears to reside from the perspective of an executing application program and may be an address generated by a host or processor. A physical address is a memory address that enables a data bus to access a particular unit of the physical memory, such as a memory cell, sector of data, block of data, etc.